# from google.colab import drive
# drive.mount('/content/gdrive')
# cd /content/gdrive/MyDrive/Test_Data_Analyst
import pandas as pd
df = pd.read_excel('Tes Data Analytics Analyst.xlsx',sheet_name='dataset')
#melihat info dari masing coloumn baik data type dan juga null value
df.info()
# Data Awal Provinsi yg Null
df[df.Provinsi.isnull()]
#setelah di anotasi secara manual data provinsi sudah tidak ada yg null
new_df = pd.read_excel('Tes Data Analytics Analyst_Rev1.xlsx',sheet_name='dataset')
new_df[new_df.Provinsi.isnull()]
# Terlihat masih ada data yg null di kolom Pemilik_Ponsel & Pengguna_Ponsel
new_df.isnull().sum()
#Kolom yg null tersebut saya isi dengan data rata2 dari masing2 kolom
new_df.Pemilik_Ponsel.fillna(new_df.Pemilik_Ponsel.mean(),inplace=True)
new_df.Pengguna_Ponsel.fillna(new_df.Pengguna_Ponsel.mean(),inplace=True)
new_df.isnull().sum()
# Tidak ada duplicated data
new_df[new_df.duplicated()]
#di column Nilai_UMR ada data yg nilai datanya 'no data'
kolom = new_df.columns
new_df[new_df[kolom].values == 'no data']
# Dibeberapa kolom seperti Dana_Alokasi_Umum, Nilai_UMR, Jumlah_Penduduk_Bekerja ada yg nilainya 0 ini perlu di isi rata2nya
new_df[new_df[kolom].values == 0]
# merubah 'no data' menjadi 0 kemudian type datanya jadi int
new_df.Nilai_UMR.replace('no data','0',inplace=True)
new_df['Nilai_UMR'] = new_df.Nilai_UMR.astype(int)
#Merubah data2 dengan nilai yg bernilai anomali dengan nilai rata2nya
new_df.Nilai_UMR.replace(0,int(new_df.Nilai_UMR.mean()),inplace=True)
new_df[new_df.Nilai_UMR.values == 0]
new_df[new_df.Dana_Alokasi_Umum.values == 0]
#Merubah nilai 0 menjadi rata2 dari Dana_Alokasi_Umum
new_df.Dana_Alokasi_Umum.replace(0,int(new_df.Dana_Alokasi_Umum.mean()),inplace=True)
new_df[new_df.Dana_Alokasi_Umum.values == 0]
new_df[new_df.Jumlah_Penduduk_Bekerja == 0]
#Merubah nilai 0 menjadi rata2 dari Jumlah_Penduduk_Bekerja
new_df['Jumlah_Penduduk_Bekerja'] = new_df.Jumlah_Penduduk_Bekerja.astype(int)
new_df.Jumlah_Penduduk_Bekerja.replace(0,int(new_df.Jumlah_Penduduk_Bekerja.mean()),inplace=True)
new_df[new_df.Jumlah_Penduduk_Bekerja == 0]
#Memastikan lagi bahwa sudah tidak ada data yg bernilai 0
new_df[new_df[kolom].values == 0]
#Mensplit data keluran dan desa dari kolom Jumlah_Kelurahan_Desa
new_df['Jumlah_Kelurahan'] = new_df.Jumlah_Kelurahan_Desa.str.split('/',expand=True)[0]
new_df['Jumlah_Desa'] = new_df.Jumlah_Kelurahan_Desa.str.split('/',expand=True)[1]
new_df.Jumlah_Kelurahan.replace('-',0,inplace=True)
new_df.Jumlah_Kelurahan = new_df.Jumlah_Kelurahan.astype(int)
new_df.Jumlah_Kelurahan.sum()
new_df.Jumlah_Desa.replace('-',0,inplace=True)
new_df.Jumlah_Desa = new_df.Jumlah_Desa.astype(int)
new_df.Jumlah_Desa.sum()
new_df.info()
# Merubah type data float menjadi integer kecuali kolom Indeks_Pembangunan_Manusia
new_df[['Luas_Wilayah','Pengeluaran_Riil_per_Kapita_ per_Tahun','Jumlah_Penduduk_Miskin','Pemilik_Ponsel','Pengguna_Ponsel']] = \
new_df[['Luas_Wilayah','Pengeluaran_Riil_per_Kapita_ per_Tahun','Jumlah_Penduduk_Miskin','Pemilik_Ponsel','Pengguna_Ponsel']].astype(int)
new_df.info()
#Mendrop kolom Jumlah_Kelurahan_Desa
new_df = new_df.drop(columns=['Jumlah_Kelurahan_Desa'])
new_df.to_excel('Data_Bersih.xlsx',index=False)
new_df.sort_values(by='PDRB',ascending=False).head(1)
new_df.sort_values(by='PDRB_Per_Kapita',ascending=False).head(1)
new_df.groupby(['Regional','Provinsi',])['PDRB'].sum().sort_values(ascending=False)
new_df.groupby(['Regional','Provinsi',])['PDRB_Per_Kapita'].sum().sort_values(ascending=False)
new_df.groupby(['Area',])['Pengguna_Ponsel'].sum().sort_values(ascending=False)
new_df.groupby(['Area',])['Jumlah_Penduduk'].sum().sort_values(ascending=False)
new_df.groupby(['Area',])['Jumlah_Penduduk_Bekerja'].sum().sort_values(ascending=False)
import plotly.express as px
fig = px.scatter(data_frame=new_df,x='Kota_Kabupaten',y='Pengeluaran_Riil_per_Kapita_ per_Tahun',
color='Area',width=1200,hover_data=['Kota_Kabupaten','Pengeluaran_Riil_per_Kapita_ per_Tahun','Provinsi'])
fig.show()
df_except_jakarta = new_df[new_df.Provinsi.str.contains('DKI Jakarta') == False]
fig = px.bar(data_frame=df_except_jakarta,x='Provinsi',y='Pengeluaran_Riil_per_Kapita_ per_Tahun',
color='Area',width=1200,hover_data=['Kota_Kabupaten','Pengeluaran_Riil_per_Kapita_ per_Tahun','Provinsi'])
fig.show()
fig = px.box(data_frame=df_except_jakarta,x='Provinsi',y='Pengeluaran_Riil_per_Kapita_ per_Tahun',
color='Area',width=1200,hover_data=['Kota_Kabupaten','Pengeluaran_Riil_per_Kapita_ per_Tahun','Provinsi'])
fig.show()
fig = px.box(data_frame=new_df,x='Provinsi',y='Indeks_Pembangunan_Manusia',
color='Area',width=1200,hover_data=['Kota_Kabupaten','Provinsi'])
fig.show()
fig = px.bar(data_frame=new_df.sort_values(by='PDRB',ascending=False),x='Kota_Kabupaten',y='PDRB',
color='Provinsi',width=2000,hover_data=['Kota_Kabupaten','PDRB','Provinsi'],)
fig.show()
fig = px.bar(data_frame=new_df.sort_values(by='PDRB_Per_Kapita',ascending=False),x='Kota_Kabupaten',y='PDRB_Per_Kapita',
color='Provinsi',width=2000,hover_data=['Kota_Kabupaten','PDRB_Per_Kapita','Provinsi'],)
fig.show()
fig = px.bar(data_frame=new_df.sort_values(by='Jumlah_Penduduk_Bekerja',ascending=False),x='Kota_Kabupaten',y='Jumlah_Penduduk_Bekerja',
color='Provinsi',width=2000,hover_data=['Kota_Kabupaten','Jumlah_Penduduk_Bekerja','Provinsi'],)
fig.show()
fig = px.bar(data_frame=new_df.sort_values(by='Jumlah_Penduduk_Miskin',ascending=False),x='Kota_Kabupaten',y='Jumlah_Penduduk_Miskin',
color='Provinsi',width=2000,hover_data=['Kota_Kabupaten','Jumlah_Penduduk_Miskin','Provinsi'],)
fig.show()
fig = px.bar(data_frame=new_df.sort_values(by='Pengguna_Internet',ascending=False),x='Kota_Kabupaten',y='Pengguna_Internet',
color='Provinsi',width=2000,hover_data=['Kota_Kabupaten','Provinsi'],)
fig.show()
fig = px.bar(data_frame=new_df.sort_values(by='Pengguna_Ponsel',ascending=False),x='Kota_Kabupaten',y='Pengguna_Ponsel',
color='Provinsi',width=2000,hover_data=['Kota_Kabupaten','Provinsi'],)
fig.show()
fig = px.bar(data_frame=new_df.sort_values(by='Pemilik_Ponsel',ascending=False),x='Kota_Kabupaten',y='Pemilik_Ponsel',
color='Provinsi',width=2000,hover_data=['Kota_Kabupaten','Provinsi','Indeks_Pembangunan_Manusia'],)
fig.show()
px.scatter_matrix(data_frame=new_df,height=3000,width=4000,color='Indeks_Pembangunan_Manusia')
#Untuk Jambi kabupaten Jabung timur kenapa index pembangunan manusianya rendah karena berhubungan dengan jumlah pengguna internet
#untuk
# px.sunburst(data_frame=new_df,color='Indeks_Pembangunan_Manusia',names='Provinsi',values='Jumlah_Penduduk')
UMR_Mean = new_df.groupby(['Regional','Kota_Kabupaten'])['Nilai_UMR'].mean().sort_values(ascending=False).reset_index()
UMR_Mean
px.bar(UMR_Mean,x='Kota_Kabupaten',y='Nilai_UMR',color='Regional')
UMR_Med = new_df.groupby(['Regional','Kota_Kabupaten'])['Nilai_UMR'].median().sort_values(ascending=False).reset_index()
UMR_Med
px.bar(UMR_Med,x='Kota_Kabupaten',y='Nilai_UMR',color='Regional')
px.scatter(data_frame=new_df[['Kota_Kabupaten','Nilai_UMR','Jumlah_Penduduk_Miskin','Jumlah_Penduduk_Bekerja','Regional']],x='Nilai_UMR',y='Jumlah_Penduduk_Miskin',
hover_data=['Kota_Kabupaten'],color='Regional')
px.scatter(data_frame=new_df[['Kota_Kabupaten','Nilai_UMR','Jumlah_Penduduk_Miskin','Jumlah_Penduduk_Bekerja','Regional']],x='Nilai_UMR',y='Jumlah_Penduduk_Bekerja',
hover_data=['Kota_Kabupaten'],color='Regional')
#Dari grafik di atas tidak ada korelasi antara UMR dengan Jumlah Penduduk Miskin dengan jumlah penduduk bekerja
new_df.corr()
px.scatter_matrix(data_frame=new_df[['Pengguna_Ponsel','Jumlah_Penduduk', 'Dana_Alokasi_Umum', 'Jumlah_Penduduk_Miskin', 'Jumlah_Penduduk_Bekerja', 'Pengguna_Internet', 'Pemilik_Ponsel']],
height=2000)
#Membuat kolom baru Kepadtan Penduduk
new_df['Kepadatan_Penduduk'] = new_df.Jumlah_Penduduk / new_df.Luas_Wilayah
KepadatanPenduduk = new_df.groupby(['Area','Jumlah_Kelurahan','Jumlah_Desa','Kepadatan_Penduduk'])['Pengguna_Ponsel'].sum().reset_index()
KepadatanPenduduk.corr()
px.scatter(data_frame=KepadatanPenduduk,x='Kepadatan_Penduduk',y='Pengguna_Ponsel',
color='Area',facet_col='Area')
px.scatter(data_frame=KepadatanPenduduk,x='Jumlah_Desa',y='Pengguna_Ponsel',
color='Area',facet_col='Area')
px.scatter(data_frame=KepadatanPenduduk,x='Jumlah_Kelurahan',y='Pengguna_Ponsel',
color='Area',facet_col='Area')
#Kepadatan Penduduk dengan pengguna ponsel ada korelasi 0.450904
new_df[['PDRB','PDRB_Per_Kapita','Pengguna_Ponsel']].corr()
a = new_df[['PDRB','PDRB_Per_Kapita','Pengguna_Ponsel']]
#Normalisasi data PDRB_Per_Kapita
New_PDRB_Per_Kapita = []
for x in a.values:
if x[1] > x[0]:
hasil = x[1] / 10
New_PDRB_Per_Kapita.append(hasil)
else:
New_PDRB_Per_Kapita.append(x[1])
a['New_PDRB_Per_Kapita'] = New_PDRB_Per_Kapita
a.corr()
px.scatter_matrix(data_frame=a[['PDRB','New_PDRB_Per_Kapita','Pengguna_Ponsel']],height=1000)
#Data PDRB_Per_Kapita perlu di normaliasi
new_df['New_PDRB_Per_Kapita'] = New_PDRB_Per_Kapita
new_df.to_excel('Data_Bersih.xlsx',index=False)